﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NikotinBert
{
    class Welt
    {
        private List<Lebewesen> lebewesen;
        private DateTime weltZeit;
        private TimeSpan zeitSchritt;

        public Welt()
        {
            lebewesen = new List<Lebewesen>();
            // Weltzeit auf jetzt setzen
            weltZeit = DateTime.Now;
            // Zeitschritte der Welt einstellen
            zeitSchritt = TimeSpan.FromSeconds(1.0);
        }

        public Lebewesen getLebewesen(int index)
        {
            // Gibt lebewesen an Stelle "index" zurück, falls dieses existiert
            if (index >= lebewesen.Count)
            {
                return null;
            }
            else
            {
                return lebewesen.ElementAt(index);
            }
        }

        public int getLebewesenAnzahl()
        {
            return lebewesen.Count;
        }

        public void addLebewesen(Lebewesen lebewesen)
        {
            this.lebewesen.Add(lebewesen);
        }

        public bool removeLebewesen(Lebewesen lebewesen)
        {
            //Löscht ein lebewesen, falls dieses in der liste existiert
            try
            {
                this.lebewesen.Remove(lebewesen);
                lebewesen = null;
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public DateTime getWeltzeit()
        {
            return weltZeit;
        }

        public void setWeltzeit(DateTime weltZeit)
        {
            this.weltZeit = weltZeit;
        }

        public TimeSpan getZeitSchritt()
        {
            return zeitSchritt;
        }

        public void setZeitSchritt(TimeSpan zeitSchritt)
        {
            this.zeitSchritt = zeitSchritt;
        }

        public void refresh()
        {
            //Zeit vergehen lassen:
            weltZeit += zeitSchritt;

            //Alle Lebewesen aktualisieren:
            for(int i = 0; i < lebewesen.Count; i++)
            {
                lebewesen.ElementAt(i).refresh(weltZeit);

                //überprüfen, ob tier noch lebt:
                if (lebewesen.ElementAt(i).getLebenspunkte() == 0)
                {
                    lebewesen.RemoveAt(i);
                    i--;
                }
            }

            //Quatsch anstellen . . .
        }
    }
}
